using ServiceContracts.DTO;
using ServiceContracts.Enums;

namespace ServiceContracts;

public interface IPersonService
{
    PersonResponse AddPerson(PersonAddRequest request);

    List<PersonResponse> GetAllPersons();

    PersonResponse? GetPersonByPersonId(Guid? personId);

    /// <summary>
    ///
    /// </summary>
    /// <param name="searchBy"></param>
    /// <param name="searchString"></param>
    /// <returns></returns>
    List<PersonResponse> GetFilteredPersons(string searchBy, string? searchString);

    public List<PersonResponse> GetSortedPersons(List<PersonResponse> allPersons, string sortBy,
        SortOrderOptions sortOrder);

    PersonResponse UpdatePerson(PersonUpdateRequest? personUpdateRequest);

    bool DeletePerson(Guid? personID);
}